package br.com.minhabiblia.util;

import java.util.ArrayList;
import java.util.List;

import br.com.minhabiblia.entidade.vo.Mensagem;

public class FormatadorMensagens {
	
	private Mensagem dados;

	public FormatadorMensagens(Mensagem versoEmail) {
		this.dados = versoEmail;
	}

	public String getRemetente() {
		return obtemRemetenteValido(getDados().getRemetente(), getDados().getEmailRemetente());
	}

	public String getEmailRemetente() {
		return getDados().getEmailRemetente();
	}

	public List<String> getDestinatarios() {
		return obtemListaNomes(getDados().getDestinatarios());
	}

	public List<String> getEmailsDestinatarios() {
		return obtemListaNomes(getDados().getEmailsDestinatarios());
	}

	public String getAssunto() {
		return criaAssunto(getDados().getRemetente(), getDados().getEmailRemetente());
	}

	public String getTexto() {
		return criaTexto();
	}

	public Mensagem getDados() {
		return dados;
	}

	public void setDados(Mensagem dados) {
		this.dados = dados;
	}
	
	private List<String> obtemListaNomes(String nomeSeparadosPorVirgula) {
		List<String> lista = new ArrayList<String>(); 
		
		if (stringValida(nomeSeparadosPorVirgula)) {
			for (String nome : nomeSeparadosPorVirgula.split(",")) {
				lista.add(nome.trim());
			}
		}
		
		return lista;
	}
	
	private String criaAssunto(String remetente, String emailRemetente) {
		String assinatura = obtemRemetenteValido(remetente, emailRemetente);
		StringBuilder assunto = new StringBuilder();
		assunto.append(assinatura);
		assunto.append(" enviou-lhe uma mensagem especial!");
		
		return assunto.toString();
		
	}

	private String obtemRemetenteValido(String remetente, String emailRemetente) {
		if (stringValida(remetente)) {
			return Character.toString(remetente.charAt(0)).toUpperCase() + remetente.substring(1, remetente.length());
		}
		
		return emailRemetente;
	}

	private String criaTexto() {
		StringBuilder sb = new StringBuilder();
		sb.append(getDados().getMensagem());
		sb.append("\n");
		sb.append("\n");
		sb.append(getDados().getTexto());
		sb.append("\n");
		sb.append("(");
		sb.append(getDados().getLivro());
		sb.append(" ");
		sb.append(getDados().getCapitulo());
		sb.append(":");
		sb.append(getDados().getVerso());
		sb.append(")");
		sb.append("\n");
		sb.append("\n");
		sb.append("Acesse: http://minhabibliaonline.appspot.com");
		
		return sb.toString();
	}
	
	private boolean stringValida(String str) {
		return str != null && !"".equals(str);
	}

}
